com={};
com.mexcad={};
com.mexcad.segCreditoAcc={};
com.mexcad.segCreditoAcc.jsonrpc=null;
com.mexcad.segCreditoAcc.formCliente=null;
com.mexcad.segCreditoAcc.listModel=null;
com.mexcad.segCreditoAcc.listModelClientes=null;
com.mexcad.segCreditoAcc.listStatus=null;
com.mexcad.segCreditoAcc.gerente=null;
com.mexcad.segCreditoAcc.winDetalle=null;
com.mexcad.segCreditoAcc.idStatus=null;
com.mexcad.segCreditoAcc.idCreditoAcreedor=null;
com.mexcad.segCreditoAcc.credito=0;
com.mexcad.segCreditoAcc.idPagoAcreedor=0;
com.mexcad.segCreditoAcc.numPago=0;
com.mexcad.segCreditoAcc.montoAnticipado=0;

var dsPagos;

var  credito =null;
var gerente=null;
var arrayData;
var ejecutivo;

var statusCreditoArray=new Array('Cr�dito activo','Cr�dito concluido','Cr�dito Cancelado','Pago anticipado', 'Pago completado');



com.mexcad.segCreditoAcc.printException=function(excep){
	alert("ERROR INTERNO\nArchivo:\tSeguimientoCredito.jsp\nSeguimientoCredito.js.\n\nMensaje:\n" + excep.message);
};


com.mexcad.segCreditoAcc.initData=function() {

   try{
   		com.mexcad.segCreditoAcc.jsonrpc = new JSONRpcClient("../JSON-RPC");
   		com.mexcad.segCreditoAcc.cargaPagosIniciales();
   }catch(e){
   		com.mexcad.segCreditoAcc.printException(e);
   	
   }
	
};

com.mexcad.segCreditoAcc.cargaPagosIniciales=function(){
	//se obtienen los datos de la tabla de partidas
		arrayData = new Array();
		
		return arrayData;
};

com.mexcad.segCreditoAcc.cargaCredito=function(){
	//se obtienen los datos de la tabla de partidas
	try {
		// aqui se conecta a hibernate para traer los lugares de los eventos del
		
		//solicitud = com.mexcad.segCreditoAcc.jsonrpc.DelegateAcreedor.generaInstanciaSolicitud();
		com.mexcad.segCreditoAcc.credito  = com.mexcad.segCreditoAcc.jsonrpc.DelegateAcreedor.getCreditoAcreedorById(parseInt(com.mexcad.segCreditoAcc.idCreditoAcreedor));
		
		com.mexcad.segCreditoAcc.idStatus=com.mexcad.segCreditoAcc.credito.idEstatusCreditoAcc;
		//alert('cred'+com.mexcad.segCreditoAcc.credito);
		
		arrayData=this.cargaPagos();

	} catch (excep) {
		this.printException(excep);
	}
	
};

com.mexcad.segCreditoAcc.generaHeader=function(){
   if(this.credito !=null ){
   	var acreedor = com.mexcad.segCreditoAcc.jsonrpc.DelegateAcreedor.getAcreedorById(this.credito.ckCreditoAcreedor.idAcreedor);
    var tipoCredito=   com.mexcad.segCreditoAcc.jsonrpc.DelegateAcreedor.getEsquemaCreditoAcByid(this.credito.ckCreditoAcreedor.idEsquemaCreditoAc);
   	ejecutivo=  '';//com.mexcad.segCreditoAcc.jsonrpc.DelegateAcreedor.getEjecutivoPorId(credito.idEjecutivo);
   	var strPlazo =  com.mexcad.segCreditoAcc.jsonrpc.DelegateAcreedor.getPlazoSolicitadoPorId(this.credito.idPeriodoSolicitado);
   	var statusStr =  '';//com.mexcad.segCreditoAcc.jsonrpc.DelegateAcreedor.getEstatusPorId(credito.idEstatusCreditoAcc);

   	
   	
   	
   	
   	
   	var header='<table width="660" border="0" cellpadding="1" cellspacing="1" style="text-shadow:#999;"  >\n';
	var footer='</table>';
	var body='<tr class="Nones"><td width="130"  align="right" style="background-color:#2383A7;color:#FFFFFF;font-size: 12px;"><b>Acreedor:</b></td>\n';
	body+='<td width="420" style="font-size: 12px;"  align="left" ><b>&nbsp;&nbsp;'+acreedor.apellidoPaterno+' '+acreedor.apellidoMaterno+' '+acreedor.nombres+'</b></td></tr>\n';
	
    body+='<tr class="Pares"><td width="130"  align="right" style="background-color:#2383A7;color:#FFFFFF;font-size: 12px;"><b>Esquema de cr�dito:</b></td>\n'; 
    body+='<td width="420" style="font-size: 12px;" >&nbsp;&nbsp;'+tipoCredito+'</td></tr>\n';    

    body+='<tr class="Nones"><td width="130"  align="right" style="background-color:#2383A7;color:#FFFFFF;font-size: 12px;"><b>Fecha de inicio:</b></td>\n'; 
    body+='<td width="420" ><table width="410" border="0" cellpadding="0" cellspacing="0"> <tr>\n'; //&nbsp;&nbsp;'+credito.fechaCreacionStr+'</td></tr>\n';    
    body+='<td width="105" style="font-size: 12px;" >&nbsp;'+this.credito.fechaInicialStr+'</td>\n';
    
    body+='<td width="150"  align="center" style="background-color:#2383A7;color:#FFFFFF;font-size: 12px;"><b>Fecha �ltimo c�lculo:</b> </td>\n';
    body+='<td width="140" style="font-size: 12px;" >&nbsp;'+this.credito.fechaCalculoInteresesStr+'</td>\n';
    body+='</tr></table></td></tr>\n';
    
    body+='<tr class="Pares"><td width="130"  align="right" style="background-color:#2383A7;color:#FFFFFF;font-size: 12px;"><b>Plazo:</b></td>\n'; 
    body+='<td width="420" ><table width="400" border="0" cellpadding="0" cellspacing="0"><tr>\n';
    body+='<td width="90" style="font-size: 12px;" >&nbsp;'+this.credito.plazoSolicitado+ ' ' +strPlazo+'</td>\n';
 	    
 	body+='<td width="45"  align="right" style="background-color:#2383A7;color:#FFFFFF;font-size: 12px;"><b>Tasa: </b></td>\n';
    body+='<td width="195" style="font-size: 12px;" >&nbsp;'+this.credito.tasaBase+'% anual</td>\n';
    

    body+='</tr></table></td></tr>\n';    
    
    if(this.credito.ckCreditoAcreedor.idEsquemaCreditoAc ==2){
    	body+='<tr class="Nones"><td width="130"  align="right" style="background-color:#2383A7;color:#FFFFFF;font-size: 12px;"><b>IVA:</b></td>\n'; 
    	body+='<td width="420" style="font-size: 12px;" >&nbsp;&nbsp;'+formateaMoneda(this.credito.impuestos)+'</td></tr>\n';    
    }
    
    body+='<tr class="Pares"><td width="130"  align="right" style="background-color:#2383A7;color:#FFFFFF;font-size: 12px;"><b>Capital:</b></td>\n'; 
    body+='<td width="420" ><table width="500" border="0" cellpadding="0" cellspacing="0"> <tr>\n'; //&nbsp;&nbsp;'+credito.fechaCreacionStr+'</td></tr>\n';    
    
    body+='<td width="140" style="font-size: 12px;" >&nbsp;'+formateaMoneda(this.credito.capital)+'</td>\n';
 	body+='<td width="130"  align="right" style="background-color:#2383A7;color:#FFFFFF;font-size: 12px;"><b>Inter�s:</b></td>\n'; 
    body+='<td width="120" style="font-size: 12px;" >&nbsp;&nbsp;'+formateaMoneda(this.credito.intereses)+'</td>\n';    
   
    body+='<td width="180"  align="right" style="background-color:#2383A7;color:#FFFFFF;font-size: 12px;"><b>Monto a pagar:</b></td>\n'; 
    body+='<td width="120" style="font-size: 12px;" >&nbsp;&nbsp;'+formateaMoneda(this.credito.montoRestante)+'</td></tr>\n';    

    body+='</tr></table></td></tr>\n';    
    
   	return (header+body+footer);
   
   }
};

com.mexcad.segCreditoAcc.cargaPagos=function(){
	//se obtienen los datos de la tabla de partidas
	try {
		// aqui se conecta a hibernate para traer los lugares de los eventos del
		var lista  = com.mexcad.segCreditoAcc.jsonrpc.DelegateAcreedor.getAllPagosCreditoAccByIdCredito(parseInt(com.mexcad.segCreditoAcc.idCreditoAcreedor)).list;
		var numReg = lista.length;		
		arrayData = new Array();
		
		for (var i = 0; i < numReg; i++) {
			var oReg = lista[i];
	
		arrayData[i] = new Array(oReg.ckPagoAcreedor.idPagoAcreedor , 
								 oReg.ckPagoAcreedor.idCreditoAcreedor,
								 oReg.idEstatusCreditoAcc,
								 oReg.numPago,
								 oReg.fechaExigibleStr,
								 oReg.fechaAplicacionStr,
								 oReg.fechaRegistroStr,
								 oReg.abono,
								 oReg.saldo,
								 oReg.capital,
								 oReg.intereses,
								 oReg.impuestos);
		}
		


		
		
       if(dsPagos != null){ 
	   	dsPagos.removeAll();
       	dsPagos.loadData(arrayData);
       }
	   return arrayData;

	} catch (excep) {
		this.printException(excep);
	}
	
};


com.mexcad.segCreditoAcc.eliminaRenta=function(selectecRow){

	com.mexcad.segCreditoAcc.jsonrpc.DelegateAcreedor.eliminaRenta(selectecRow.data.idPagoAcreedor);
	dsPagos.removeAll();
	dsPagos.loadData(com.mexcad.segCreditoAcc.cargaPagos());
			
	
	
};


com.mexcad.segCreditoAcc.guardaPagoAcreedor=function( monto){

	var fechaStr   = $('fecha').value;
	
	if(fechaStr == ''){
		alert('Campo de fecha invalido');
		return;
	}
		
	var respuesta=com.mexcad.segCreditoAcc.jsonrpc.DelegateAcreedor.guardaPagoAcreedor(com.mexcad.segCreditoAcc.idCreditoAcreedor,  monto, fechaStr);
	if( respuesta < 0){
		alert("El pago no pudo ser guardado \n " +
				"La fecha a aplicar pago es menor a la fecha de la ultima actualizaci�n.");
		return;
	}else{
		alert('Se guard� el pago');
	
	}
	location='seguimientoCreditoAcreedor.jsp?identificador='+com.mexcad.segCreditoAcc.idCreditoAcreedor;
	Ext.getCmp('montoPago').setValue('0.00');
	
	
	
	//dsPagos.removeAll();
	//dsPagos.loadData(com.mexcad.segCreditoAcc.cargaPagos());
	
};


			
	
Ext.onReady(function(){

Ext.QuickTips.init();
com.mexcad.segCreditoAcc.initData();
com.mexcad.segCreditoAcc.idCreditoAcreedor=gup('identificador');

com.mexcad.segCreditoAcc.cargaCredito();

    // turn on validation errors beside the field globally
    Ext.form.Field.prototype.msgTarget = 'side';


		widthLabel =170;
		
	var panelSuperior = new Ext.FormPanel({
        labelWidth: 75, // label settings here cascade unless overridden
      	id:'formSolicitudes',
        frame:true,
      //  title: 'Seguimiento de solicitud',
        bodyStyle:'padding:5px 5px 0',
        width: 700,

        items: [{	id : 'datosGenerales',
				    border:true,
				    //autoHeight:true,
					layout:'table',
					layoutConfig:{columns: 2},
					defaults:{bodyStyle:'padding:2px 0px 0;', border:false},
					items:[{
					   		html:'<div id="header" style="font:\'Comic Sans MS\', cursive;"> </div>',
							width:700,
					   		bodyStyle:funExtJS.styleFONT+'text-align:left;padding:0px 0px 0;'
						   },{
					   		html:'',
							width:700,
					   		bodyStyle:funExtJS.styleFONT+'text-align:left;padding:0px 0px 0;'
						   } ]
						
					
				}]
    });
	
    var panelCentral =new Ext.FormPanel ({
		    autoScroll: true,
		    id:'formInternas',
		   	layout: 'table',
			layoutConfig: {columns: 5},
			items:[{
		  		xtype:'panel',
		  		plain:true,
		   		activeTab: 0,
		   		width:650,
		   		height:35,
		   		resizeTabs:false,
				layoutOnTabChange: true,
				border:false,
				defaults:{bodyStyle:'padding:0px;font-size:10;font-family:Verdana', border:false},
				items:[{
					cls : 'x-plain',
					id : 'tabAutorizaciones',
					layout : 'table',
					defaults : {bodyStyle : 'padding:10px;font-size:10;font-family:Verdana', border : false},
					layoutConfig : {columns : 7},
					items : [new Ext.Panel({
					        	collapsible: false,
					        	defaults: {border:false},
					     		items: [{
									layout: 'table',
								    defaults : {bodyStyle : 'padding:2px 0px 0;', border : false},
								    layoutConfig: {columns: 8},
								    items:[
								    {
										width:60,
									   	html: ' monto: $',
									   	bodyStyle:funExtJS.styleFONT+'text-align:center;padding:0px 0px 0;'
									   
									},{
										layout: 'form',
										width:100,
								   		items: [new Ext.form.TextField({hideLabel: true, width:90, allowBlank : true, style:'text-transform:uppercase;', id:'montoPago',
								   			selectOnFocus:true,
								   			value:'0.00',
								   			listeners:{
														blur :function(o){
														//  if(storeClaves.getCount()>0){
															formateaImporteMoneda('montoPago','CAMPO');
														//	recordData.data.enero= 
															
														//  }
														}
											}
										})]
									},{
									   	html: 'Fecha de aplicaci�n: ',
									   	width:110,
									   	bodyStyle:funExtJS.styleFONT+'text-align:left;padding:0px 0px 0;'
									},{
										xtype: 'datefield',
										name: 'fecha',
										id: 'fecha',
										value:com.mexcad.segCreditoAcc.jsonrpc.DelegateAcreedor.getCurrentDateStr(),
										width:95,
										hideLabel: true,
										format :'d/m/Y',
										readOnly:false,
										allowBlank : true,
										listeners:{
											blur :function(o){
												
											}
										}
									} ]
								}
								]
						})]
				}]
			}]
			});
    
    
    	function statusChange(val){
		
			var status = statusCreditoArray[val-1];//com.mexcad.segCreditoAcc.jsonrpc.DelegateAcreedor.getEstatusCreditoRentaPorId(parseInt(val));
		
	        if(val == 1 ){
	            return '<span style="color:black;">' + status + '</span>';
	        }else if(val == 2){
	            return '<span style="color:blue;">' + status + '</span>';
	        }else if(val == 3){
	            return '<span style="color:red;">' + status + '</span>';
	        }else if(val == 4){
	            return '<span style="color:blue;">' + status + '</span>';
	        }else if(val == 5){
	            return '<span style="color:blue;">' + status + '</span>';
	        }
	        return val;
   }
	

   
	dsPagos = new Ext.data.Store({
        reader: new Ext.data.ArrayReader({}, [
              {name: 'idPagoAcreedor'},
               {name: 'idCreditoAcreedor'},
               {name: 'idEstatusCreditoAcc'},
               {name: 'numPago'},
               {name: 'fechaExigibleStr'},
               {name: 'fechaAplicacionStr'},
               {name: 'fechaRegistroStr'},
               {name: 'abono'},
               {name: 'saldo'},
               {name: 'capital'},
               {name: 'intereses'},
               {name: 'impuestos'}
               
               
          ])
    });
					
    
    function renderTopic(value, p, record){
    	
    	return String.format(
                '<b><a href="http://extjs.com/forum/showthread.php?t={2}" target="_blank">{0}</a></b><a href="http://extjs.com/forum/forumdisplay.php?f={3}" target="_blank">{1} Forum</a>',
                value, record.data.forumtitle, record.id, record.data.forumid);
                
    }
    
    dsPagos.loadData(arrayData);
 
        var colModel = new Ext.grid.ColumnModel([
	        {id:'numPago',header: "Pago ", width: 40, sortable: true, dataIndex: 'numPago'},
	        {header: "fecha Registro", width: 100, sortable: true, dataIndex: 'fechaRegistroStr'},
	        {header: "Estatus", width: 100, sortable: true, renderer: statusChange, dataIndex: 'idEstatusCreditoAcc'},
	        {header: "Abono", width: 90, sortable: true,  dataIndex: 'abono',renderer: 'usMoney'},
	        {header: "Saldo", width: 90, sortable: true,  dataIndex: 'saldo',renderer: 'usMoney'},
    	    {header: "Capital", width: 90, sortable: true,  dataIndex: 'capital',renderer: 'usMoney'},
    	    {header: "Intereses", width: 90, sortable: true,  dataIndex: 'intereses',renderer: 'usMoney'},
    	    {header: "Impuestos", width: 90, sortable: true,  dataIndex: 'impuestos',renderer: 'usMoney'}
    	
    	]);
    
    
	var gpPagos = new Ext.grid.EditorGridPanel({
			id:'gpPagos',
			title: 'Listado de pagos',
			store: dsPagos,	
			width: 700,
			height:240,
			clicksToEdit:1,
			cm:colModel,
			frame:false,
			border: true,
			enableColumnResize :true,
			selModel: new Ext.grid.RowSelectionModel({singleSelect:true}),
			tbar: [{
					text: 'Pagar',
					id:'btnPagarRenta',
					iconCls: 'add',
				    handler : function(){
					   	//verifica si se selecciono algun renglon
				   		selectecRow = gpPagos.getSelectionModel().getSelected();
				   		
				   		var monto = eliminaComas(Ext.getCmp('montoPago').getValue(), 'IMPORTE');
				    
				  
				    		// Ext.MessageBox.confirm('Confirm', 'Are you sure you want to do that?', showResult);
			 				Ext.MessageBox.buttonText.ok = "SI"; 
			 				Ext.MessageBox.buttonText.cancel = "Cancelar";
								Ext.MessageBox.show({
					           	title: 'Confirmación',
					 			msg: 'Desea aplicar el pago?',
					           	width:300,
					           	buttons: Ext.MessageBox.OKCANCEL,
					           	OK:'SI',
					           	animEl: 'gpPagos',
					           	fn: function(buttonClicked,text) {
					    	       	if(buttonClicked == 'ok') {
					    	       		//eliminaEjecutivo
					    					
				             	    if(monto <= 0){
				             	    	alert('No se pueden realizar pagos por valores negativos o cero');
				             	    	return;
				             	    }
				              	    			
		             	    			com.mexcad.segCreditoAcc.guardaPagoAcreedor(monto);
				             	    			

							   			
					    			}
					    		}	           
				       		});
					   	
					}
			},{
					text: 'Recalcular credito',
					id:'refrescar',
					iconCls:'table-refresh',
				    handler : function(){
				    	
				    	var fechaStr   = $('fecha').value;
	
						if(fechaStr == ''){
							alert('Campo de fecha invalido');
							return;
						}
				    	
				    	
				    		Ext.MessageBox.buttonText.ok = "SI"; 
			 				Ext.MessageBox.buttonText.cancel = "Cancelar";
								Ext.MessageBox.show({
					           	title: 'Confirmación',
					 			msg: 'Desea recalcular los intereses? al '+fechaStr,
					           	width:300,
					           	buttons: Ext.MessageBox.OKCANCEL,
					           	OK:'SI',
					           	animEl: 'gpPagos',
					           	fn: function(buttonClicked,text) {
					    	       	if(buttonClicked == 'ok') {
										
								    	
									   	var respuesta = com.mexcad.segCreditoAcc.jsonrpc.DelegateAcreedor.actualizaInteresesDeCreditoAcreedor(parseInt(com.mexcad.segCreditoAcc.idCreditoAcreedor),fechaStr);
								   		if(respuesta<0){
								   			alert('La fecha proporcionada es anterior al último cálculo de intereses');
								   			return;
								   		}else{
								   			alert('El crédito fue actualizado');
								   			location='seguimientoCreditoAcreedor.jsp?identificador=' + com.mexcad.segCreditoAcc.idCreditoAcreedor;
								   		
								   		}

							   			
					    			}
					    		}	           
				       		});
				    	
				    	
				    
					}
			}]

		});

		
		
	

    
    var fsf = new Ext.Panel({
        	//collapsible: false,
        	defaults: {bodyStyle : 'padding:0px 0px 0;', border : false},
     		items: [{ //
				layout: 'table',
				//colspan:5,
				boder:false,
			   	defaults : {bodyStyle : 'padding:0px 0px 0;', border : false},
		    	layoutConfig: {columns: 1},
		    	items:[panelSuperior
		    		   ,panelCentral
		    		   ,gpPagos
		    		  ]
			}]
		});
		fsf.render(document.body);
		

	Ext.getCmp('btnPagarRenta').setDisabled(false);

    $('header').innerHTML =com.mexcad.segCreditoAcc.generaHeader();
    	if(com.mexcad.segCreditoAcc.idStatus != 1 ){
    		Ext.getCmp('btnPagarRenta').setDisabled(true);
			Ext.getCmp('refrescar').setDisabled(true);
			
			
			
    	}
    
    
    
    
});// termina OnReady






















